import java.util.Arrays;

/**
 * 有效三角形的个数
 * 给定一个包含非负整数的数组 nums ，返回其中可以组成三角形三条边的三元组个数。
 */
public class demo15 {
    public int triangleNumber(int[] nums) {
        Arrays.sort(nums);
        int n = nums.length,ret = 0;
        for(int i = n-1;i >= 2;i--){
            int left = 0,right = i-1;
            while(left < right ){
                if(nums[left] + nums[right] > nums[i]){
                    ret += right - left;
                    right--;
                }else{
                    left++;
                }
            }
        }
        return ret;
    }
}
